package com.zz.framework.core.utils;

/**
 * Copyright © 2021 StariverPool All rights reserved.
 * Created on 2021/6/28 3:41 下午.
 *
 * @version: V1.0
 */
public class RxTimerUtil {

    public static RxTimerUtil newInstance(){
        return new RxTimerUtil();
    }
//    private  Disposable mDisposable;

    /**
     * milliseconds毫秒后执行next操作
     * @param milliseconds
     * @param next
     */
    public  void timer(long milliseconds,final IRxNext next) {
//        Observable.timer(milliseconds, TimeUnit.MILLISECONDS)
//                .observeOn(AndroidSchedulers.mainThread())
//                .subscribe(new Observer<Long>() {
//                    @Override
//                    public void onSubscribe(@NonNull Disposable disposable) {
//                        mDisposable=disposable;
//                    }
//
//                    @Override
//                    public void onNext(@NonNull Long number) {
//                        if(next!=null){
//                            next.doNext(number);
//                        }
//                    }
//
//                    @Override
//                    public void onError(@NonNull Throwable e) {
//                        //取消订阅
//                        cancel();
//                    }
//
//                    @Override
//                    public void onComplete() {
//                        //取消订阅
//                        cancel();
//                    }
//                });
    }


    /**
     * 每隔milliseconds毫秒后执行next操作
     * @param milliseconds
     * @param next
     */
    public  void interval(long milliseconds,final IRxNext next){
//        Observable.interval(milliseconds, TimeUnit.MILLISECONDS)
//                .observeOn(AndroidSchedulers.mainThread())
//                .subscribe(new Observer<Long>() {
//                    @Override
//                    public void onSubscribe(@NonNull Disposable disposable) {
////                        if (mDisposable!=null&&!mDisposable.isDisposed())mDisposable.dispose();
//                        mDisposable=disposable;
//                    }
//
//                    @Override
//                    public void onNext(@NonNull Long number) {
//                        if(next!=null){
//                            next.doNext(number);
//                        }
//                    }
//
//                    @Override
//                    public void onError(@NonNull Throwable e) {
//
//                    }
//
//                    @Override
//                    public void onComplete() {
//
//                    }
//                });
    }
    // 每隔milliseconds毫秒后执行指定动作
    public  void interval(long milliseconds,final IRxNext next,final IRxError mError){
//        if(next!=null){
//            next.doNext(1);
//        }
//        Observable.interval(milliseconds, TimeUnit.MILLISECONDS)
//                .observeOn(AndroidSchedulers.mainThread())
//                .subscribe(new Observer<Long>() {
//                    @Override
//                    public void onSubscribe(@NonNull Disposable disposable) {
//                        mDisposable=disposable;
//                    }
//
//                    @Override
//                    public void onNext(@NonNull Long number) {
//                        if(next!=null){
//                            next.doNext(number);
//                        }
//                    }
//
//                    @Override
//                    public void onError(@NonNull Throwable e) {
//                        if (mError!=null)mError.onError(e);
//                    }
//
//                    @Override
//                    public void onComplete() {
//
//                    }
//                });
    }


    /**
     * 取消订阅
     */
    public  void cancel(){
//        if(mDisposable!=null&&!mDisposable.isDisposed()){
//            mDisposable.dispose();
//            LogUtils.error("====定时器取消======");
//        }
    }

    public interface IRxNext{
        void doNext(long number);
    }
    public interface IRxError{
        void onError(Throwable e);
    }
}
